The present invention pertains to the field of playback of streaming media (such as audio and audio-visual works) which are retrieved from sources having non-deterministic delays such as, for example, servers (such as file servers or streaming media servers) broadcasting data via the Internet. In particular, the present invention pertains to method and apparatus for providing playback of audio or audio-visual works received from sources having non-deterministic delays. In further particular, the present invention pertains to method and apparatus for providing continuous playback of streaming media from sources having non-deterministic delays such as, for example, servers (such as file servers or streaming media servers) broadcasting data via the Internet, an Intranet, or the like.
Many digitally encoded audio and audio-visual works are stored as data on servers (such as file servers or streaming media servers) that are accessible via the Internet for users to download. FIG. 1 shows, in schematic form, how such audio or audio-visual works are distributed over the Internet. As shown in FIG. 1, media broadcast server 2000 accesses data representing the audio or audio-visual work from storage medium 2100 and broadcasts the data to multiple recipients 23001 to 2300n across non-deterministic delay network 2200. In this system there are two main sources of random delay: (a) delay due to media broadcast server 2000 accessing storage medium 2100 and (b) delay due to the congestion, interference, and other delay mechanisms within network 2200.
One well known technique for providing playback of the audio or audio-visual work is referred to as batch playback. Batch playback entails downloading an entire work and initiating playback after the entire work has been received. Another well known technique for providing playback of the audio or audio-visual work is referred to as xe2x80x9cstreaming.xe2x80x9d Streaming entails downloading data which represents the audio or audio-visual work and initiating playback before the entire work has been received.
There are several disadvantages inherent in both of these techniques. A prime disadvantage of batch playback is that the viewer/listener must wait for the entire work to be downloaded before any portion of the work may be played. This can be tedious since the viewer/listener may wait a long time for the transmission to occur, only to discover that the work is of little or no interest soon after playback is initiated. The streaming technique alleviates this disadvantage of batch playback by initiating playback before the entire work has been received. However, a disadvantage of streaming is that playback is often interrupted when the flow of data is interrupted due to network traffic, congestion, transmission errors, and the like. These interruptions are tedious and annoying since they occur randomly and have a random duration. In addition, intermittent interruptions often cause the context of the playback stream to be lost as the viewer/listener waits for playback to be resumed when new data is received. A further disadvantage of streaming is that a user or client is required to poll for additional data according to its rate of use of the data. In this manner, a user or client using data at a rapid rate has to make additional requests for data at a higher rate than a user or client using the data at a slower rate.
A further disadvantage in broadcasting audio or audio-visual works using prior art methods occurs when clients request data asynchronously from the media server. Currently, there are two prior art methods for broadcasting a work to multiple clients requesting data at arbitrary times. The first prior art method involves re-broadcasting the work at regular intervals. This prior art method is efficient for the media server since its storage access patterns and load are basically independent of the number of clients receiving the audio or audio-visual work. A major problem with this prior art method is that clients must join a re-broadcast in the middle of the audio or audio-visual work currently being broadcast, or wait for the next re-broadcast to begin to view the start of the audio or audio-visual work.
The second prior art method initiates a re-broadcast of the audio or audio-visual work each time a client requests to view the audio or audio-visual work. This prior art method has the advantage that client do not have to wait to view the start of work and begin reception immediately. A major problem with this second prior art method is that the media server must monitor, track and fulfill the request of each client requesting data individually. This causes a dramatic increase in server load during heavy use since multiple requests arrive simultaneously, and storage access patterns and broadcast load vary widely. As a result, the media server""s capacity to serve a number of clients in a reasonable time is limited.
As one can readily appreciate from the above, a need exists in the art for a method and apparatus for providing substantially continuous playback of streaming media such as audio and audio-visual works received from sources having non-deterministic delays such as a file server broadcasting data via the Internet. In addition, a need exists in the art for a method and apparatus for broadcasting streaming media on an efficient basis that maximizes broadcast media server capacity.
Embodiments of the present invention advantageously satisfy the above-identified need in the art and provide method and apparatus for broadcasting streaming media on an efficient basis that maximizes broadcast media server capacity.
One embodiment of the present invention is a method for broadcasting information from a server to a client which comprises the steps of: (a) broadcasting information at predetermined starting times; (b) broadcasting time-scale modified versions of the information for periods of time, at least one period starting before or after one of the predetermined starting times; (c) receiving a request for the information from the client between the predetermined starting times; and (d) transmitting one of the time-scale modified versions to the client.